#ifndef _RENZO_PRIMITIVE_GROUP_
#define _RENZO_PRIMITIVE_GROUP_

#include "RenzoMustHave.h"
#include "RenzoObject.h"
#include "RenzoBoundingBox.h"
#include "RenzoAnimator.h"

namespace Renzo
{
/**
 Abstract class for PolygonGroup and PointGroup. Each group has the same material and texture for all vertices belong to it. 
 In other words, a primitive group is the smallest renderable group such that render state is unchanged.
 */
class PrimitiveGroup : public Renzo::Object
{
protected:
	PrimitiveGroup(void);
	virtual ~PrimitiveGroup(void);

public:
	void setAnimator(Animator* a);
	const Animator* getAnimator() const;

	virtual BoundingBox* getBoundingBoxAABB() = 0;
protected:
	BoundingBox bb;
	Matrix4 matTransform;
	Animator* animator;
};
}
#endif
